const joi = require("joi");

/**
 * string() 值必须为字符串
 * alphanum() 只包含字母和数字的字符串
 * min(length) 最小长度
 * max(length) 最大长度
 * required() 值为必填项 ，不能为undefined
 * pattern(正则表达式) 值必须符合正则表达式的规则
 */

// 管理员登录表单的验证规则对象
exports.login_schema = {
    // 表示只需要对body中的数据进行验证
    body:{
        // admin_name: joi.string().pattern(/^[a-zA-Z][a-zA-Z0-9]{0,9}*$/) //另一种写法
        admin_name: joi.string().alphanum().min(1).max(10).required().error(new Error("非法格式的账号")),
        admin_pwd: joi.string().pattern(/^[\S]{6,16}$/).required().error(new Error("非法格式的密码"))
    }
};

// 修改管理员信息表单验证规则
exports.update_info_schema = {
    body:{
        id: joi.number().min(1).max(1000).required().error(new Error("非法格式的ID")),
        admin_name: joi.string().alphanum().min(1).max(10).error(new Error("非法格式的账号")),
        admin_pwd: joi.string().pattern(/^[\S]{6,10}$/).error(new Error("非法格式的密码"))
    }
}

// 管理员列表表单的验证规则
exports.admin_list_schema = {
    body:{
        pageNum : joi.number().min(1).max(1000).default(1).error(new Error("pageNum必须为1~1000的数值")),
        pageSize : joi.number().min(1).max(50).default(10).error(new Error("pageSize必须为1~50的数值"))
    }
}

// 修改主题配置信息
exports.update_theme_config_schema = {
    body:{
        key : joi.string().min(1).max(20).required().error(new Error("非法格式的key")),
        val : joi.string().min(1).max(20).required().error(new Error("非法格式的val"))
    }
}

// 获取访问量
exports.request_schema = {
    body:{
        type : joi.string().max(10).default("week").error(new Error("非法的type格式"))
    }
}

// 修改公告内容
exports.update_notice_schema = {
    body:{
        notice_content : joi.string().min(1).max(200).required().error(new Error("非法格式的公告内容"))
    }
}